/*
 * commons is a based project implemented
 * Copyright (C) 2024 Jasmine
 */
package com.easy.log.anno;

import java.lang.annotation.*;

import io.swagger.v3.oas.annotations.media.Schema;

/**
 * 操作日志注解
 *
 * @author Jasmine
 * @since 1.0.0
 */
@Schema(name = "操作日志注解")
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SysLog {

    /**
     * 模块名称（用于接口方法或类上）
     * <p>
     * 优先级： 接口方法上的 @SysLog(module = "模块") > 接口类上的 @SysLog(module = "模块") > @Tag(name = "模块") 内容
     * </p>
     */
    String module() default "";

    /**
     * 日志描述（仅用于接口方法上）
     * <p>
     * 优先级：@Log(desc="描述") > @Operation(summary="描述")
     * </p>
     */
    String desc() default "";

    /** 是否保存请求的参数 (优先级大于配置文件的) */
    boolean isSaveRequestData() default true;

    /**
     * 是否忽略日志记录（用于接口方法或类上）
     */
    boolean ignore() default false;
}
